linux top指令詳解
睡睡唸
linux常用 top ,看目前os裏面哪個程式資源吃比較兇,
但每次都是只看固定幾個欄位,
最近剛好喵到完整的說明。
正文
一般top會長這樣
第一行
top
15:40:37 | 目前時間 |
---|---|
up 6 days | 已開機時間 |
3 users | 目前登入的使用者數量 |
load average | 1 min,5 min,15min的系統瓶均負載 |
第二行
Tasks
419 total | 總處理程序 |
---|---|
1 running | 執行中的程式 |
418 sleeping | 睡眠中的程式 |
0 stopped | 停止中的程式 |
0 zombie | 173. Linux殭屍程式 |
第三行
%Cpu(s):
0.2 us | 使用者佔用的CPU |
---|---|
0.1 sy | 核心空間佔用的CPU |
0.0 ni | 改變過優先順序的程式佔用的CPU |
99.7 id | 閒置的CPU |
0.0 wa | IO等待佔用的CPU |
0.0 hi | 硬體中斷(Hardware IRQ)佔用C的PU |
0.0 si | 軟體中斷(Software IRQ)佔用的CPU |
0.0 st | 偷取時間(Steal Time)佔用的CPU |
Hardware IRQ : 硬體中斷是從外部裝置(如磁碟控製器、網路卡、鍵盤控製器、外部計時器、硬體感應器等)發送到處理器的電子警報訊號
ref . Hardware Interrupt time – ‘hi’ time in top
Software IRO:軟體中斷從程式引發的中斷行爲
ref. Software Interrupt time – ‘si’ time in top
Steal CPU Time :虛擬機器的CPU在虛擬機監護程式正在處理其他虛擬機器時,等待實際CPU的時間百分比。
ref. Steal CPU time – ‘st’ time in top
竊取 CPU 時間 – 頂部的「st」時間
第四行
MiB Mem
64207.4 total | 物理記憶體總量 |
---|---|
7866.7 free | 可用記憶體 |
16649.0 used | 已使用記憶體 |
39691.6 buff/cache | 緩存的記憶體量 |
第五行
MiB Swap
2048.0 total | 虛擬記憶體總量 |
---|---|
2048.0 free | 可用虛擬記憶體總量 |
0.0 used | 已使用虛擬記憶體 |
46765.3.0 avail Mem | 可用記憶體[free+(buff/cache)] |
補充 Linux的計算方式跟windows的不一樣,
當 『可以被應用程式使用,但被暫時借去做別的用途』,
在Linux裏面也是顯示為used。
所以要查目前記憶體使用量可以改用htop
或free -m
ref . Linux 的記憶體快取(Cache Memory)功能:Linux 系統把記憶體用光了?
第七行
預設的欄位名稱
PID
: 執行任務的 Process IDUSER
: 執行任務的使用者名稱PR
: 任務的優先度 (Priority)NI
: 任務的 Nice Value,負的值代表優先度高,正的值代表優先度低VIRT
: 總共用到多少 kB 虛擬記憶體 (Virtual Memory)RES
: 實體記憶體 (Resident Size) 大小 kBSHR
: 總共用到多少 kB 的共享記憶體 (Shared Memory)S
: 狀態 (Status)- R 代表執行中
- D 代表不可中斷睡眠 (不可被 signal 打斷通常在等 I/O)
- S 代表睡眠 (可被喚醒)
- T 中斷中或停止,可能是被
SIGSTOP
或SIGTSTP
停止,或是被 degubber 中斷 (ptrace) - Z 代表殭屍,通常發生在 Child 已經執行完,等待 Parent 結束或回收
%CPU
: 佔用到多少 CPU %,注意到一個核心是 100%,所以多核心是可以操過 100% 的%MEM
: 佔用到多少全部記憶體多少比例TIME+
: 程式已經執行多少時間,單位1/100秒COMMAND
: 任務的指令名稱
非預設的欄位名稱,
叫出來的方式為 f
-> 選擇欄位(space
) -> 離開(q
)
PPID
: 執行任務的 Process ID的父親 (原因參考173. Linux殭屍程式UID
:執行程式的使用者IDRUID
: 真正的使用者IDRUSER
: 真正的使用者SUID
: 暫存使用者IDSUSER
: 暫存使用者名稱GID
: 群組IDGROUP
: 群組名稱PGRP
: Process Group IdTTY
: 控制終端的名稱TPGID
: Tty Process Group IdSID
: session ID (一個login裏面的所有process),有點像 134. 關閉ssh連線後,仍可執行程式裏面的screennTH
: 與一個進程關聯的執行緒數量p
: 最後使用的CPUTIME
: 程式已經執行多少時間,單位 1秒SWAP
: 當前被移到交換區的記憶體大小CODE
: 目前用於執行程式碼碼的物理記憶體DATA
:一個程式保留的私有記憶體量nMaj
:已發生的主要分頁錯誤次數nMin
:已發生的次要分頁錯誤次數nDRT
: (已棄用)WCHAN
: 顯示了每個進程或執行緒目前正在等待的內核函數或事件的名稱或指針Flags
:目前任務的排程標誌,以十六進製表示,並且去掉了零CGROUPS
:表示程式所在的控制組的名稱SUPGIDS
:表示進程所在的父控制組的 IDSUPGRPS
:表示程式所在的父控制組的名稱TGID
: Thread Group IdOOMa
: 用來調整每個進程的 OOMS 值,以影響其被終止的機率OOMs
: 記憶體分數,評估進程或任務對內存需求的數值ENVIRON
: 顯示所有的環境變數vMj
: 主要分頁錯誤計數增量vMn
: 次要分頁錯誤計數增量USED
: 記憶體 Res+Swap SizensIPC
: IPC 命名空間,用於隔離進程間通訊資源,確保它們在不同的命名空間中互不干擾nsMNT
: MNT 命名空間,用於隔離和管理不同命名空間中的檔案系統掛載點資訊nsNET
: NET 命名空間,用於隔離和管理不同命名空間中的網絡資源和網絡設置nsPID
: PID 命名空間,用於隔離不同命名空間中的進程識別號,確保它們在各自的命名空間中具有唯一的 PIDnsUSER
:USER 命名空間,用於隔離不同命名空間中的用戶和用戶許可權,確保它們在各自的命名空間中具有獨立的用戶身份和權限nsUTS
:UTS (UNIX Time-sharing System)命名空間,用於隔離不同命名空間中的主機名和域名設置,確保它們在各自的命名空間中具有獨立的組態LXC
: LXC(Linux Containers)容器名稱RSan
: 代表一個進程或任務正在使用的匿名內存的大小RSfd
: 代表一個進程或任務正在使用的檔案內存的大小RSlk
: 代表一個進程或任務正在使用的已鎖定頁面的大小RSsh
: 代表一個進程或任務正在使用的共享內存的大小CGNAME
: 控制組名稱,用於標識和管理相關的進程或資源的分組。NU
: "最後已知的 NUMA 節點"
ref.